The present invention relates to computer networking systems, and more particularly to a method and apparatus for providing a network controller system that uses directed heartbeat packets.
Computers and other devices may be networked together using any one of several available architectures and any one of several corresponding and compatible network protocols. A common network architecture is Etherne(trademark), such as the 10Base-T and 100Base-TX Etherne(trademark) Standards according to the IEEE Standard 802.3, although another Etherne(trademark) architecture operating at 1 Gigabit per second (Gbps) is also available. In an Etherne(trademark) architecture, the computers each include a bus system with corresponding slots for receiving compatible network adapter expansion cards, where one or more of the adapter cards may be network interface cards (NICs). Each NIC includes an appropriate connector for interfacing a compatible network cable, such as a coaxial cable, a twisted-wire cable, a fiber optic cable, etc. For example, in a star configuration, each NIC includes an RJ-45 connector for receiving a compatible RJ-45 plug of a twisted-wire cable, where each network cable is coupled to a central device such as a repeater, hub, switch, etc.
In a packet-switched configuration, each computer or device sends data packets according to a selected upper level protocol, such as Transmission Control Protocol/Internet Protocol (TCP/IP), the Internet Protocol exchange (IPX), NetBEUI or the like. NetBEUI is short for NetBIOS Enhanced User Interface, and is an enhanced version of the NetBIOS protocol used by network operating systems such as LAN Manager, LAN Server, Windows for Workgroups, Windows 95 and Windows NT. NetBEUI was originally designed by IBM for IBM""s LAN Manager server and later extended by Microsoft and Novell. TCP/IP is used in Internet applications, or in intranet applications such as a local area network (LAN). In this manner, computers and other devices share information according to the higher level protocols.
One or more computers in a network configuration typically operates as a server for other computers and devices in the network. Often, the other computers and devices rely on the server(s) for information, storage, access to databases, programs, other networks, etc., and various other services. It is desired that the server be as reliable as possible. Each computer, including the server, is typically coupled to a computer using a single network controller or adapter. If the network controller fails, the access to the server is interrupted resulting in loss of productivity and inefficiency. It is further desired to provide as high a bandwidth path to the server as possible, especially during periods of heavy demand and increased network traffic. A single network controller results in a bottleneck of data flow.
It is desirable to improve the network efficiency and fault tolerance of a network in a practical and cost effective manner. It is also desirable to display the status and configuration of each port in an accurate and efficient manner.
A network controller system according to the present invention includes a plurality of network ports and a driver system that operates the network ports as a team. The team is operated to simulate a single logical device in one of several team modes, such as fault tolerance or load balancing modes to enhance performance of communication of the computer in a network. The driver system periodically determines and updates the status of each of the network ports, where the status of each is based at least on whether at least one directed packet has been received and transferred to the driver system by a respective network port. If any one of the network ports has not received a directed packet within a predetermined time period, the driver system commands another network port to transmit a directed heartbeat packet to the network port that has not received a directed packet. In this manner, the driver system need only cause one directed heartbeat packet to be sent to test any one of the network ports. Directed heartbeat packets are substantially more efficient than broadcast heartbeat packets, since the number of packets transmitted on a network may be reduced and the amount of unnecessary processing per heartbeat packet is reduced or even eliminated.
The plurality of network ports may include a primary port and at least one secondary port. In this embodiment, if the primary port has not received a directed packet within a predetermined time period, the driver system commands at least one of the secondary ports to transmit a directed heartbeat packet to the primary port. Alternatively, the driver system may command each of the secondary ports to transmit a directed packet to the primary. Also, if a secondary port has not received a packet within a predetermined time period, the driver system commands the primary port to transmit a directed heartbeat packet to that secondary port.
The directed heartbeat packets may be transmitted on a periodic basis, such as after each timeout of a predetermined timing period. It is possible, however, to reduce the number of heartbeat packets by sending them only when necessary. The driver system may maintain the status of each of the network ports using a plurality of states. The driver system updates the status of each of the network port after each of a predetermined timing interval by changing the state based on whether a directed packet has been received. For example, the states may include an ok state indicating proper operation, a failed state indicating that the network port is not operating properly, and one or more intermediate states. The driver system sequentially downgrades the status of a network port from the ok state to each next intermediate state until a directed packet is received or until the state of the network port is in the failed state. If and when the network port receives a directed packet, its status is restored back to the ok state.
A packet-switched network according to the present invention includes a network device that maintains communication in the network by transferring packets in the network and a computer system including a network controller system as previously described. The computer system further includes a processor, a main memory and a bus system. The plurality of ports are implemented by one or more network controllers coupled to the bus system. The driver system is executed by the processor from the main memory. The network device comprises a repeater or a switch or any other device for maintaining communication of packets in the network.
A method of testing a plurality of network ports of a computer system according to the present invention includes operating the network ports as a team and determining the status of each of the network ports based on reception of directed packets, including directed heartbeat packets, within a predetermined time period. The method further includes commanding another network port to transmit a directed heartbeat packet to any network port that has not received a directed packet within the predetermined time period.
The network ports may include a primary port and at least one secondary port. If so, the method may include commanding at least one of the secondary ports to transmit a directed heartbeat packet to the primary port if the primary port has not received a directed packet within the predetermined time period. Alternatively, the method may include commanding each of the secondary ports to send a directed heartbeat packet to the primary port. The method may further include commanding the primary port to transmit a directed heartbeat packet to a secondary port if that secondary port has not received a packet within the predetermined time period.
The plurality of states may include an ok state, a failed state and at least one intermediate state between the ok and failed states. If so, the method may include updating the status from the ok state to the at least one intermediate state if a directed packet has not been received with the predetermined timing interval or updating the status from the at least one intermediate state to the failed state if a directed packet has not been received with the predetermined timing interval. The method may further include updating the status to the ok state from any other state upon reception of a directed packet. Also the method may include sending a directed heartbeat packet to any of the plurality of network ports that has a state other than the ok state.
It is now appreciated that a network controller system using directed heartbeat packets according to the present invention is an efficient way to test one or more ports of network controllers of a computer system in a network. The plurality of network ports operating as team enhances the communication of the computer system in the network when operating in one of several modes, such as fault tolerance or load balancing modes. A directed heartbeat packet is sent by one port to any other port in the team that has not received a directed packet to test its receive status. Directed heartbeat packets are either not sent to other devices in the network or if sent, are dropped or otherwise ignored and not processed by the other devices. In this manner, directed heartbeat packets reduce extraneous packets in the system and reduce or eliminate unnecessary processing of extraneous packets.